package com.example.firstapp.KtLesson

import org.json.JSONObject

//数据类型
fun main() {
    // 声明
    // 自动推断
    val number = 100   //自动认为是int，超过范围给long
    val bigNumber = 8000000000000  //超过给long
    // 加L
    val longNumber = 20L
    // 直接定义
    val intNumber:Int = 11

    //浮点
    val doubleNumber:Double = 3.14
    val fNumber = 3.14f
    // 还是要加f
    val floatNumber:Float = 3.14f

    //字符 单引号
    val charvalue = 'A'
    // 字符串 双引号
    val stringvalue = "012345"
    val char2:Char = stringvalue[0]

    //字符串模板
    println("the result is $stringvalue")
    // 花括号 任意表达式
    println("the result is ${stringvalue.length}")

    //字符串连接
    println("1" + 10 + "2")
    //字符转义 \n换行
    println("hello\n"+"world")
    val hello3 = "{key:\"value\"}"
    println("""
        "key":"value"
    """.trimIndent())

    //强制转换
    val number100 = 100 //int
    println("转换成string："+number100.toString())

    // +-*/
    // 整数/整数=整数  整数/浮点= 浮点
    val int3 =3
    val int2 =2
    println(int3/int2)
    println(int3/int2.toDouble())


    //容器
    //数组 初始化指定长度 不可调整长度，内存同一存储
    // arrayOf
    val array1 = arrayOf(1,2,3)
    // val array1:Array<Int> = arrayOf(1,2,3)
    val array2 = arrayOf(1,"2",true)
    // val arrayw:Array<Any> = arrayOf(1,"2",true)
    // arrayOfBulls 创建指定大小 所有元素均为空的和数组，但需指定类型
    val arrayOfnulls:Array<String?> = arrayOfNulls(5)
    arrayOfnulls[0] = "element1"
    arrayOfnulls[1] = "element1"
    arrayOfnulls[2] = "element1"
    arrayOfnulls[3] = "element1"
    arrayOfnulls[4] = "element1"
    //array构造函数
    var array3  = Array(5) {i -> i+1}
    //原生类型数组
    val array4 = ByteArray(5)
    array4[0] = 5

    // int 数组
    var intarray1 = IntArray(5)
    // {100,100,100,100,100}
    var intarray2 = IntArray(5){100}
    var intarray3 = IntArray(5){it*2}

    println("数组遍历")
    for (i in intarray3){
        println(i)
    }
    println("数组下标遍历")
    for (i in intarray3.indices){
        println(i.toString()+"->"+intarray3[i])
    }
    println("数组遍历键值")
    for ((i1 ,i2) in array3.withIndex()){
        println(i1.toString()+"->"+i2)
    }
    println("foreach")
    intarray3.forEach {
        println(it)
    }
    println("foreach plus")
    intarray3.forEachIndexed{
        i3,i4 -> println(i3.toString()+"->"+i4)
    }











}
